1. Field of the Invention
This invention relates to peripheral controllers for computer systems and, more particularly, to a composite drive controller for controlling an array of disk drives and including a SCSI pass-through mechanism for controlling standard SCSI peripherals.
2. Description of the Relevant Art
During the past several years, a new trend in mass storage subsystems has emerged for improving the performance, capacity, cost, and reliability associated with the storage of data. This trend involves an increase in the use of what are typically referred to as disk array subsystems.
Generally speaking, a disk array subsystem includes an array of standard hard disk drives coupled in parallel, referred to collectively as a "composite" drive. The disk array subsystem further includes a drive array controller for interfacing the composite drive to a computer system. The drive array controller, which is generally installable on an expansion bus of the computer system, performs an address translation function and converts input-output ("I/O") read and write requests into a sequence of seeks, delays or other disk commands to read data from or write data to the composite drive.
A drive array controller differs from a conventional disk drive controller (i.e., a single disk controller) in that, with respect to the drive array controller, the set of disk drives coupled thereto emulate a single disk drive having a greater capacity and a higher performance than any individual disk drive included as a portion thereof. To perform an access to a "composite" location within the composite drive, the drive array controller must be cognizant of both the position of the particular disk drive to be accessed as well as the physical sector location of that disk drive which corresponds to the composite location for which access is sought. Various hardware and software implementations are well-known for performing these functions.
To implement a drive array subsystem within, for example, an exemplary 80386 or 80486 microprocessor-based computer system, a drive array controller card is typically provided that is installable on one of the expansion slots of the host system. The drive array controller card provides an interface between the expansion bus and a collection of hard drives that form the composite drive. Exemplary expansion bus standards include the ISA (Industry Standard Architecture) bus and the EISA (Extended Industry Standard Architecture) bus.
In addition to performing the composite address-to-physical address translation, the drive array controller may also perform a variety of additional tasks. For example, the drive array controller may perform data redundancy tasks such as data mirroring or data guarding. Exemplary data mirroring and data guarding techniques are described in a variety of publications of the known prior art, including the articles: "Introduction to Redundant Arrays of Inexpensive Disks (RAID)" by D. Patterson, P. Chen, G. Gibson and R. Katz, IEEE, 1989; "Coding Techniques for Handling Failures in Large Disk Arrays" by G. Gibson, L. Hellerstein, R. Karp, R. Katz and D. Patterson, Report No. UCB/CSD 88/477, December 1988, Computer Science Division, University of California Berkeley; and "A Case Study for Redundant Arrays of Inexpensive Disks (RAID)" by D. Patterson, G. Gibson, and R. Katz, presented at the June 1988 ACM SIGMOD Conference in Chicago, Ill.
A popular interface bus for coupling peripheral devices in general to a host computer is the Small Computer System Interface (SCSI) bus. A single SCSI bus can accommodate up to eight different peripheral devices. The SCSI standard involves a set of pre-specified bus signals and command definitions that support communications with a number of different types of peripheral devices.
A variety of peripherals such as hard drives, floppy drives, CD-ROM units, tape drives and printers have been developed that are directly connectable to the SCSI bus. Such "intelligent" SCSI peripherals include interface electronics adapted to receive a SCSI command packet from the SCSI bus which contains the information needed to perform a desired operation. In a typical system the SCSI peripheral is connected to a "host adapter" that provides an interface between the expansion bus of the host computer and the SCSI bus.
One prevalent host adapter that provides an interface between the ISA expansion bus and the SCSI bus is the AHA-1540 (and AHA-1542) Intelligent Host Adapter manufactured by Adaptec, Inc. of Milpitas, Calif.. The AHA-1540 is commonly employed within, for example, 80386 and 80486 microprocessor-based computer systems to couple stand-alone SCSI hard drives, SCSI floppy drives, SCSI CD-ROM units and SCSI tape drives to an internal ISA expansion slot of the host computer.
If a user desires to incorporate within a particular computer system both a composite drive and stand-alone SCSI devices such as CD-ROM units and tape drives, both a drive array controller card and a host adapter card such as the AHA-1540 are typically utilized. The drive array controller card and the host adapter card are plugged into separate EISA slots of the computer system and provide respective interfaces to the composite drive and the stand-alone SCSI devices. Unfortunately, the occupation of two EISA expansion slots limits further system expansion due to the small overall number of EISA slots available in a typical system. This is a particular problem for fileserver systems since they often require many network interface cards and/or serial port cards.